#pragma once

template <typename VALUE_TYPE>
class CBaseLPCArray
{
public:
	virtual void build(VALUE_TYPE s, VALUE_TYPE sepStr);
	virtual void build(VALUE_TYPE s, char sepChar);
	virtual void clear();
	virtual void operator =(const CBaseLPCArray<VALUE_TYPE>& src);
	virtual void add(VALUE_TYPE value, bool copyValue = true);
	virtual VALUE_TYPE remove(intptr_t index, bool delValue = true);
	virtual intptr_t insert(intptr_t index, VALUE_TYPE value, bool copyValue = true);

	intptr_t count;
	VALUE_TYPE * str;
protected:
	intptr_t maxLength;

	virtual intptr_t getLength(VALUE_TYPE p) = 0;
	virtual intptr_t getSingleCharLength() = 0;
	virtual VALUE_TYPE find(VALUE_TYPE p, VALUE_TYPE s) = 0;
	virtual VALUE_TYPE find(VALUE_TYPE p, char c) = 0;

};
